package com.itheima.d6_object_stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

/**
 * 目标：掌握对象字节输入流的使用：反序列化对象。
 *
 * 类型名：OnjectInputStream
 *
 * 读对象：readObject
 */
public class Test2ObjectInputStream {
    public static void main(String[] args) {

        //        try (
//                // 1、创建一个对象字节输入流管道，包装 低级的字节输入流与源文件接通
//                ObjectInputStream ois = new ObjectInputStream(new FileInputStream("io-app2/src/itheima11out.txt"));
//                ){
//            User u = (User) ois.readObject();
//            System.out.println(u);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }


        //1、创建流对象（先创建字节输入流，然后再封装为反序列化流）
        try (FileInputStream fis = new FileInputStream("day10io-app2/file2/user.obj");
             ObjectInputStream ois = new ObjectInputStream(fis);
        ) {

            //2、读对象
//            Object obj = ois.readObject();
//            User obj = (User)ois.readObject();
//            System.out.println("obj = " + obj); //User{loginName='兮', userName='小兮', age=18, passWord='null'} ---> passWord为null，是因为在User类中，passWord被定义为了transient
//
//            System.out.println(ois.readObject());
//            System.out.println(ois.readObject());
//            System.out.println(ois.readObject()); //运行后报错：EOFException  End of File

            ArrayList<User> users = (ArrayList<User>) ois.readObject();
            users.forEach(System.out::println);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
